#include "exampleappwin.h"
#include "exampleappprefs.h"
-struct ExampleAppPrefs {
- GtkDialog parent;
+struct _ExampleAppPrefs
+{
+ GtkDialog parent;
};
-struct ExampleAppPrefsClass {
- GtkDialogClass parent_class;
+struct _ExampleAppPrefsClass
+{
+ GtkDialogClass parent_class;
};
-typedef struct ExampleAppPrefsPrivate ExampleAppPrefsPrivate;
-struct ExampleAppPrefsPrivate {
- GSettings *settings;
- GtkWidget *font;
- GtkWidget *transition;
- GtkWidget *close;
+typedef struct _ExampleAppPrefsPrivate ExampleAppPrefsPrivate;
+
+struct _ExampleAppPrefsPrivate
+{
+ GSettings *settings;
+ GtkWidget *font;
+ GtkWidget *transition;
};
G_DEFINE_TYPE_WITH_PRIVATE(ExampleAppPrefs, example_app_prefs, GTK_TYPE_DIALOG)
+static void
+preferences_closed (GtkWidget *button)
+{
+ gtk_widget_destroy (gtk_widget_get_toplevel (button));
+}
+
static void
example_app_prefs_init (ExampleAppPrefs *prefs)
{
- ExampleAppPrefsPrivate *priv;
-
- priv = example_app_prefs_get_instance_private (prefs);
- gtk_widget_init_template (GTK_WIDGET (prefs));
- priv->settings = g_settings_new ("org.gtk.exampleapp");
-
- g_settings_bind (priv->settings, "font",
- priv->font, "font",
- G_SETTINGS_BIND_DEFAULT);
- g_settings_bind (priv->settings, "transition",
- priv->transition, "active-id",
- G_SETTINGS_BIND_DEFAULT);
- g_signal_connect_swapped (priv->close, "clicked",
- G_CALLBACK (gtk_widget_destroy), prefs);
+ ExampleAppPrefsPrivate *priv;
+
+ priv = example_app_prefs_get_instance_private (prefs);
+ gtk_widget_init_template (GTK_WIDGET (prefs));
+ priv->settings = g_settings_new ("org.gtk.exampleapp");
+
+ g_settings_bind (priv->settings, "font",
+ priv->font, "font",
+ G_SETTINGS_BIND_DEFAULT);
+ g_settings_bind (priv->settings, "transition",
+ priv->transition, "active-id",
+ G_SETTINGS_BIND_DEFAULT);
}
static void
example_app_prefs_dispose (GObject *object)
{
- ExampleAppPrefsPrivate *priv;
+ ExampleAppPrefsPrivate *priv;
- priv = example_app_prefs_get_instance_private (EXAMPLE_APP_PREFS (object));
- g_clear_object (&priv->settings);
+ priv = example_app_prefs_get_instance_private (EXAMPLE_APP_PREFS (object));
+ g_clear_object (&priv->settings);
- G_OBJECT_CLASS (example_app_prefs_parent_class)->dispose (object);
+ G_OBJECT_CLASS (example_app_prefs_parent_class)->dispose (object);
}
static void
example_app_prefs_class_init (ExampleAppPrefsClass *class)
{
- G_OBJECT_CLASS (class)->dispose = example_app_prefs_dispose;
+ G_OBJECT_CLASS (class)->dispose = example_app_prefs_dispose;
+
+ gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (class),
+ "/org/gtk/exampleapp/prefs.ui");
+ gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppPrefs, font);
+ gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppPrefs, transition);
- gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (class),
- "/org/gtk/exampleapp/prefs.ui");
- gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppPrefs, font);
- gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppPrefs, transition);
- gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppPrefs, close);
+ gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (class), preferences_closed);
}
ExampleAppPrefs *
example_app_prefs_new (ExampleAppWindow *win)
{
- return g_object_new (EXAMPLE_APP_PREFS_TYPE, "transient-for", win, NULL);
+ return g_object_new (EXAMPLE_APP_PREFS_TYPE, "transient-for", win, NULL);
}
#define EXAMPLE_APP_PREFS(obj) (G_TYPE_CHECK_INSTANCE_CAST ((obj), EXAMPLE_APP_PREFS_TYPE, ExampleAppPrefs))
-typedef struct ExampleAppPrefs ExampleAppPrefs;
-typedef struct ExampleAppPrefsClass ExampleAppPrefsClass;
+typedef struct _ExampleAppPrefs ExampleAppPrefs;
+typedef struct _ExampleAppPrefsClass ExampleAppPrefsClass;
GType example_app_prefs_get_type (void);
<property name="visible">True</property>
<child>
<object class="GtkButton" id="close">
+ <signal name="clicked" handler="preferences_closed"/>
<property name="visible">True</property>
<property name="label">_Close</property>
<property name="use-underline">True</property>
GSettings *settings;
GtkWidget *font;
GtkWidget *transition;
- GtkWidget *close;
};
G_DEFINE_TYPE_WITH_PRIVATE(ExampleAppPrefs, example_app_prefs, GTK_TYPE_DIALOG)
+static void
+preferences_closed (GtkWidget *button)
+{
+ gtk_widget_destroy (gtk_widget_get_toplevel (button));
+}
+
static void
example_app_prefs_init (ExampleAppPrefs *prefs)
{
g_settings_bind (priv->settings, "transition",
priv->transition, "active-id",
G_SETTINGS_BIND_DEFAULT);
- g_signal_connect_swapped (priv->close, "clicked",
- G_CALLBACK (gtk_widget_destroy), prefs);
}
static void
"/org/gtk/exampleapp/prefs.ui");
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppPrefs, font);
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppPrefs, transition);
- gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppPrefs, close);
+
+ gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (class), preferences_closed);
}
ExampleAppPrefs *
GtkWidget *stack;
GtkWidget *search;
GtkWidget *searchbar;
- GtkWidget *searchentry;
};
G_DEFINE_TYPE_WITH_PRIVATE(ExampleAppWindow, example_app_window, GTK_TYPE_APPLICATION_WINDOW);
static void
-search_text_changed (GtkEntry *entry,
- ExampleAppWindow *win)
+search_text_changed (GtkEntry *entry)
{
+ ExampleAppWindow *win;
ExampleAppWindowPrivate *priv;
const gchar *text;
GtkWidget *tab;
if (text[0] == '\0')
return;
+ win = EXAMPLE_APP_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (entry)));
priv = example_app_window_get_instance_private (win);
tab = gtk_stack_get_visible_child (GTK_STACK (priv->stack));
}
static void
-visible_child_changed (GObject *stack,
- GParamSpec *pspec,
- ExampleAppWindow *win)
+visible_child_changed (GObject *stack,
+ GParamSpec *pspec)
{
+ ExampleAppWindow *win;
ExampleAppWindowPrivate *priv;
- if (gtk_widget_in_destruction (GTK_WIDGET (win)))
+ if (gtk_widget_in_destruction (GTK_WIDGET (stack)))
return;
+ win = EXAMPLE_APP_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (stack)));
+
priv = example_app_window_get_instance_private (win);
gtk_search_bar_set_search_mode (GTK_SEARCH_BAR (priv->searchbar), FALSE);
}
g_object_bind_property (priv->search, "active",
priv->searchbar, "search-mode-enabled",
G_BINDING_BIDIRECTIONAL);
-
- g_signal_connect (priv->searchentry, "changed",
- G_CALLBACK (search_text_changed), win);
- g_signal_connect (priv->stack, "notify::visible-child",
- G_CALLBACK (visible_child_changed), win);
}
static void
gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (class),
"/org/gtk/exampleapp/window.ui");
+
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppWindow, stack);
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppWindow, search);
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppWindow, searchbar);
- gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppWindow, searchentry);
+
+ gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (class), search_text_changed);
+ gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (class), visible_child_changed);
}
ExampleAppWindow *
<property name="visible">True</property>
<child>
<object class="GtkButton" id="close">
+ <signal name="clicked" handler="preferences_closed"/>
<property name="visible">True</property>
<property name="label">_Close</property>
<property name="use-underline">True</property>
<property name="visible">True</property>
<child>
<object class="GtkSearchEntry" id="searchentry">
+ <signal name="changed" handler="search_text_changed"/>
<property name="visible">True</property>
</object>
</child>
</child>
<child>
<object class="GtkStack" id="stack">
+ <signal name="notify::visible-child" handler="visible_child_changed"/>
<property name="visible">True</property>
</object>
</child>
GSettings *settings;
GtkWidget *font;
GtkWidget *transition;
- GtkWidget *close;
};
G_DEFINE_TYPE_WITH_PRIVATE(ExampleAppPrefs, example_app_prefs, GTK_TYPE_DIALOG)
+static void
+preferences_closed (GtkWidget *button)
+{
+ gtk_widget_destroy (gtk_widget_get_toplevel (button));
+}
+
static void
example_app_prefs_init (ExampleAppPrefs *prefs)
{
g_settings_bind (priv->settings, "transition",
priv->transition, "active-id",
G_SETTINGS_BIND_DEFAULT);
- g_signal_connect_swapped (priv->close, "clicked",
- G_CALLBACK (gtk_widget_destroy), prefs);
}
static void
"/org/gtk/exampleapp/prefs.ui");
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppPrefs, font);
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppPrefs, transition);
- gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppPrefs, close);
+
+ gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (class), preferences_closed);
}
ExampleAppPrefs *
G_DEFINE_TYPE_WITH_PRIVATE(ExampleAppWindow, example_app_window, GTK_TYPE_APPLICATION_WINDOW);
static void
-search_text_changed (GtkEntry *entry,
- ExampleAppWindow *win)
+search_text_changed (GtkEntry *entry)
{
+ ExampleAppWindow *win;
ExampleAppWindowPrivate *priv;
const gchar *text;
GtkWidget *tab;
if (text[0] == '\0')
return;
+ win = EXAMPLE_APP_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (entry)));
priv = example_app_window_get_instance_private (win);
tab = gtk_stack_get_visible_child (GTK_STACK (priv->stack));
}
static void
-visible_child_changed (GObject *stack,
- GParamSpec *pspec,
- ExampleAppWindow *win)
+visible_child_changed (GObject *stack,
+ GParamSpec *pspec)
{
+ ExampleAppWindow *win;
ExampleAppWindowPrivate *priv;
- if (gtk_widget_in_destruction (GTK_WIDGET (win)))
+ if (gtk_widget_in_destruction (GTK_WIDGET (stack)))
return;
+ win = EXAMPLE_APP_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (stack)));
+
priv = example_app_window_get_instance_private (win);
gtk_search_bar_set_search_mode (GTK_SEARCH_BAR (priv->searchbar), FALSE);
update_words (win);
priv->searchbar, "search-mode-enabled",
G_BINDING_BIDIRECTIONAL);
- g_signal_connect (priv->searchentry, "changed",
- G_CALLBACK (search_text_changed), win);
- g_signal_connect (priv->stack, "notify::visible-child",
- G_CALLBACK (visible_child_changed), win);
g_signal_connect (priv->sidebar, "notify::reveal-child",
G_CALLBACK (words_changed), win);
gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (class),
"/org/gtk/exampleapp/window.ui");
+
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppWindow, stack);
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppWindow, search);
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppWindow, searchbar);
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppWindow, gears);
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppWindow, words);
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppWindow, sidebar);
+
+ gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (class), search_text_changed);
+ gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (class), visible_child_changed);
+
}
ExampleAppWindow *
<property name="visible">True</property>
<child>
<object class="GtkButton" id="close">
+ <signal name="clicked" handler="preferences_closed"/>
<property name="visible">True</property>
<property name="label">_Close</property>
<property name="use-underline">True</property>
<property name="visible">True</property>
<child>
<object class="GtkSearchEntry" id="searchentry">
+ <signal name="changed" handler="search_text_changed"/>
<property name="visible">True</property>
</object>
</child>
</child>
<child>
<object class="GtkStack" id="stack">
+ <signal name="notify::visible-child" handler="visible_child_changed"/>
<property name="visible">True</property>
</object>
</child>
GSettings *settings;
GtkWidget *font;
GtkWidget *transition;
- GtkWidget *close;
};
G_DEFINE_TYPE_WITH_PRIVATE(ExampleAppPrefs, example_app_prefs, GTK_TYPE_DIALOG)
+static void
+preferences_closed (GtkWidget *button)
+{
+ gtk_widget_destroy (gtk_widget_get_toplevel (button));
+}
+
static void
example_app_prefs_init (ExampleAppPrefs *prefs)
{
g_settings_bind (priv->settings, "transition",
priv->transition, "active-id",
G_SETTINGS_BIND_DEFAULT);
- g_signal_connect_swapped (priv->close, "clicked",
- G_CALLBACK (gtk_widget_destroy), prefs);
}
static void
"/org/gtk/exampleapp/prefs.ui");
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppPrefs, font);
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppPrefs, transition);
- gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppPrefs, close);
+
+ gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (class), preferences_closed);
}
ExampleAppPrefs *
G_DEFINE_TYPE_WITH_PRIVATE(ExampleAppWindow, example_app_window, GTK_TYPE_APPLICATION_WINDOW);
static void
-search_text_changed (GtkEntry *entry,
- ExampleAppWindow *win)
+search_text_changed (GtkEntry *entry)
{
+ ExampleAppWindow *win;
ExampleAppWindowPrivate *priv;
const gchar *text;
GtkWidget *tab;
if (text[0] == '\0')
return;
+ win = EXAMPLE_APP_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (entry)));
priv = example_app_window_get_instance_private (win);
tab = gtk_stack_get_visible_child (GTK_STACK (priv->stack));
}
static void
-visible_child_changed (GObject *stack,
- GParamSpec *pspec,
- ExampleAppWindow *win)
+visible_child_changed (GObject *stack,
+ GParamSpec *pspec)
{
+ ExampleAppWindow *win;
ExampleAppWindowPrivate *priv;
- if (gtk_widget_in_destruction (GTK_WIDGET (win)))
+ if (gtk_widget_in_destruction (GTK_WIDGET (stack)))
return;
+ win = EXAMPLE_APP_WINDOW (gtk_widget_get_toplevel (GTK_WIDGET (stack)));
priv = example_app_window_get_instance_private (win);
gtk_search_bar_set_search_mode (GTK_SEARCH_BAR (priv->searchbar), FALSE);
update_words (win);
priv->searchbar, "search-mode-enabled",
G_BINDING_BIDIRECTIONAL);
- g_signal_connect (priv->searchentry, "changed",
- G_CALLBACK (search_text_changed), win);
- g_signal_connect (priv->stack, "notify::visible-child",
- G_CALLBACK (visible_child_changed), win);
g_signal_connect (priv->sidebar, "notify::reveal-child",
G_CALLBACK (words_changed), win);
gtk_widget_class_set_template_from_resource (GTK_WIDGET_CLASS (class),
"/org/gtk/exampleapp/window.ui");
+
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppWindow, stack);
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppWindow, search);
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppWindow, searchbar);
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppWindow, sidebar);
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppWindow, lines);
gtk_widget_class_bind_template_child_private (GTK_WIDGET_CLASS (class), ExampleAppWindow, lines_label);
+
+ gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (class), search_text_changed);
+ gtk_widget_class_bind_template_callback (GTK_WIDGET_CLASS (class), visible_child_changed);
}
ExampleAppWindow *
<property name="visible">True</property>
<child>
<object class="GtkButton" id="close">
+ <signal name="clicked" handler="preferences_closed"/>
<property name="visible">True</property>
<property name="label">_Close</property>
<property name="use-underline">True</property>
<property name="visible">True</property>
<child>
<object class="GtkSearchEntry" id="searchentry">
+ <signal name="changed" handler="search_text_changed"/>
<property name="visible">True</property>
</object>
</child>
</child>
<child>
<object class="GtkStack" id="stack">
+ <signal name="notify::visible-child" handler="visible_child_changed"/>
<property name="visible">True</property>
</object>
</child>